ASP.NET Web Forms অ্যাপ্লিকেশনগুলোতে Global.asax ফাইলটি একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি অ্যাপ্লিকেশনের সার্বিক জীবনচক্র (Application Life Cycle) এবং বিভিন্ন ইভেন্ট যেমন অ্যাপ্লিকেশন ইনিশিয়ালাইজেশন, সেশন স্টার্ট, এবং অ্যাপ্লিকেশন এরর হ্যান্ডলিং এর জন্য ব্যবহৃত হয়। বিশেষভাবে Application Level Error Handling এর জন্য Global.asax ফাইলটি ব্যবহার করা হয়। এটি পুরো অ্যাপ্লিকেশন জুড়ে ক্রিটিকাল এরর এবং এক্সেপশন সমাধান করার একটি সাধারণ পদ্ধতি প্রদান করে।
Global.asax (যাকে Application File ও বলা হয়) হল একটি স্পেশাল ফাইল যা ASP.NET অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় একটি ক্লাস হিসেবে ব্যবহার করা হয়। এটি অ্যাপ্লিকেশনের স্তরে নির্দিষ্ট কিছু ইভেন্ট হ্যান্ডল করতে ব্যবহৃত হয়, যেমন অ্যাপ্লিকেশন স্টার্ট, অ্যাপ্লিকেশন শাটডাউন, সেশন স্টার্ট, এবং এরর হ্যান্ডলিং ইত্যাদি।
এছাড়া, Application_Error ইভেন্টের মাধ্যমে অ্যাপ্লিকেশন লেভেল এরর হ্যান্ডলিং করা হয়।
Application_Error ইভেন্টটি Global.asax ফাইলে থাকে এবং অ্যাপ্লিকেশন জুড়ে যেকোনো আনহ্যান্ডেলড এক্সেপশন (uncaught exception) ধরতে পারে। এই ইভেন্টে আমরা সমস্ত unhandled exceptions ধরতে পারি এবং ব্যবহারকারীদের জন্য একটি সুন্দর ও নিরাপদ ত্রুটি পৃষ্ঠা (error page) দেখাতে পারি।
<%@ Application Language="C#" %>
<script runat="server">
void Application_Error(object sender, EventArgs e)
{
// এক্সেপশন হ্যান্ডলিং
Exception exception = Server.GetLastError();
// লগিং বা কাস্টম এরর পেজ রিডাইরেক্ট করা
LogError(exception);
// এরর পৃষ্ঠা রিডাইরেক্ট
Response.Redirect("~/ErrorPage.aspx");
}
// লগিং ফাংশন
private void LogError(Exception ex)
{
// এখানে এক্সেপশন লগিং কোড লিখুন, যেমন ডাটাবেস বা ফাইলে
System.IO.File.AppendAllText(Server.MapPath("~/App_Data/ErrorLog.txt"), ex.Message + "\n");
}
</script>
এখন, আমাদের একটি কাস্টম এরর পৃষ্ঠা তৈরি করতে হবে যেখানে Application_Error ইভেন্টে রিডাইরেক্ট করার পর ব্যবহারকারী যাবে।
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ErrorPage.aspx.cs" Inherits="WebApplication.ErrorPage" %>
<!DOCTYPE html>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<h2>Something went wrong. Please try again later.</h2>
<p>Our technical team has been notified.</p>
</body>
</html>
using System;
namespace WebApplication
{
public partial class ErrorPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// এখানে আপনি ব্যবহারকারীকে আরো তথ্য প্রদর্শন করতে পারেন, অথবা এক্সেপশন লগ করতে পারেন।
Exception ex = Server.GetLastError();
// এক্সেপশন মেসেজ লগ করা
System.IO.File.AppendAllText(Server.MapPath("~/App_Data/ErrorLog.txt"), ex.Message + "\n");
}
}
}
এখানে, ErrorPage.aspx একটি সাধারণ কাস্টম এরর পৃষ্ঠা যেখানে ব্যবহারকারীকে বলা হবে যে কিছু ভুল হয়েছে এবং টেকনিক্যাল টিম অবগত হয়েছে। এর সাথে, ErrorPage.aspx.cs ফাইলে এক্সেপশন লগ করা হচ্ছে।
এছাড়াও, Web.config ফাইলে customErrors সেকশন ব্যবহার করে অ্যাপ্লিকেশন লেভেল এরর হ্যান্ডলিং কনফিগার করা যেতে পারে।
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="~/ErrorPage.aspx">
<error statusCode="404" redirect="~/NotFound.aspx" />
<error statusCode="500" redirect="~/ErrorPage.aspx" />
</customErrors>
</system.web>
</configuration>
Global.asax ফাইল এবং Application_Error ইভেন্ট ASP.NET Web Forms অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী কেন্দ্রীয় ত্রুটি ব্যবস্থাপনা ব্যবস্থা প্রদান করে। এটি অ্যাপ্লিকেশন জুড়ে যেকোনো আনহ্যান্ডেলড এক্সেপশন হ্যান্ডল করতে এবং কাস্টম এরর পেজ প্রদর্শন করতে ব্যবহৃত হয়। এর মাধ্যমে একটি কার্যকরী ত্রুটি সমাধান ব্যবস্থা তৈরি করা সম্ভব যা অ্যাপ্লিকেশন ব্যবহারকারীর জন্য এক নিরাপদ এবং উন্নত এক্সপেরিয়েন্স নিশ্চিত করে।
common.read_more